package simulaPersistencia;

import java.util.List;

import org.apache.commons.collections.Predicate;
import org.uqbar.commons.model.CollectionBasedHome;

import clasesPrincipales.Evento;

public class EventoHome extends CollectionBasedHome<Evento>{

	@Override
	public Class<Evento> getEntityType() {
		return Evento.class;
	}

	
	@Override
	public Evento createExample() {
		return new Evento();
	}
	
	public List<Evento> buscarByExample(final Evento example) {
		return super.buscarByExample(example);
	}

	@Override
	protected Predicate getCriterio(final Evento example) {
		return new Predicate() {
			@Override
			public boolean evaluate(Object contactoEnLista) {
				Evento enLista = (Evento)contactoEnLista;
				boolean paraDevolver = true;
				if(example != null && enLista != null) {
					if (example.getFechaFin() != null && example.getFechaInicio() !=null) {
						paraDevolver = paraDevolver 
											&& (enLista.getFechaInicio().after(example.getFechaInicio()) 
											&&(enLista.getFechaFin().before(example.getFechaFin())));
						}
					if(example.getDescripcion() != null){
						paraDevolver = paraDevolver && enLista.getDescripcion().contains(example.getDescripcion());
					}
					if(enLista.getEsImportante().compareTo(example.getEsImportante()) == 1){
						paraDevolver = paraDevolver && true;
					}
					else{
						paraDevolver = paraDevolver && false;
					}
				}

				return paraDevolver;
			}
		};
	}
}